package com.example.chamberlainserver.mapper;

import com.example.chamberlainserver.Entry.UserAvailability;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 用户可用时间数据访问接口
 */
@Mapper
public interface UserAvailabilityMapper {
    /**
     * 根据ID查询用户可用时间
     */
    UserAvailability getUserAvailabilityById(@Param("id") String id);
    
    /**
     * 根据用户ID查询可用时间列表
     */
    List<UserAvailability> getUserAvailabilityByUserId(@Param("userId") Integer userId);
    
    /**
     * 根据星期几查询可用用户
     */
    List<UserAvailability> getAvailableUsersByDayOfWeek(@Param("dayOfWeek") Integer dayOfWeek);
    
    /**
     * 新增用户可用时间
     */
    int insertUserAvailability(UserAvailability userAvailability);
    
    /**
     * 批量新增用户可用时间
     */
    int batchInsertUserAvailability(@Param("list") List<UserAvailability> list);
    
    /**
     * 更新用户可用时间
     */
    int updateUserAvailability(UserAvailability userAvailability);
    
    /**
     * 删除用户可用时间
     */
    int deleteUserAvailabilityById(@Param("id") String id);
    
    /**
     * 根据用户ID删除所有可用时间
     */
    int deleteUserAvailabilityByUserId(@Param("userId") Integer userId);
    
    /**
     * 分页查询用户可用时间列表
     */
    List<UserAvailability> getPagedUserAvailabilityList(Map<String, Object> params);
    
    /**
     * 获取分页查询的总记录数
     */
    Long getPagedUserAvailabilityCount(Map<String, Object> params);
}